#ifndef SCENEMANAGER_H_INCLUDED
#define SCENEMANAGER_H_INCLUDED

#include <map>
#include <string>
#include <boost/shared_ptr.hpp>
#include <sheeplib/math/vec4.h>

#include "resources/texturemanager.h"

using boost::shared_ptr;
using std::string;
using std::map;

using engine::resources::TextureManager;

namespace engine {
		
	namespace scene {
			
		class SceneNode;
		class Entity;
		
		class SceneManager {
			private:			
				shared_ptr<SceneNode> m_RootSceneNode;
				
				map< string, shared_ptr<Entity> > m_Objects;
				
				TextureManager m_TextureManager;
				
			public:
				SceneManager();
				virtual ~SceneManager();
				
				shared_ptr<Entity> createEntity(const string& name, const string& mesh);
				
				void setAmbientLight(const slVec4& colour);
				virtual bool setWorldGeometry(const string& filePath) = 0;
				void setSkyBox(bool enable, const string& materialName);
				
				shared_ptr<SceneNode> getRootSceneNode();
		};
	}
}

#endif // SCENEMANAGER_H_INCLUDED
